// 使用前先引入 defineStore；
import { defineStore } from 'pinia';
// 我们可以使用es6 的模块化规范进行导出
 
// defineStore 方法有两个参数，第一个参数是模块化名字（相当于ID，不能重复）
 
// 第二个参数是选项
export const useStore = defineStore('main', {
  state(){  // 存放模块的变量
    return {
      token: '',
      cart:[],
      user:{}
    }
  },
  getters:{ // 相当于vue的计算属性，可以缓存数据
    getToken(state){
        return state.token
    },
    getCart(state){
      return state.cart
    },
    getUsername(state){
      return state.username
    }
  },
  actions:{ // 可以通过actions 方法，改变 state 里面的值。
      setToken(newToken){
        this.token=newToken
      },
      setUser(newUser){
        this.user=newUser
      },
      clearToken(){
        this.token=''
      },
      setCart(newCart){
        this.cart=newCart
      },
      clearCart(){
        this.cart=[]
      }
  }
})